home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / BROWSERS / GLUESTIK.ZOO / transprt.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-12-16  |  7.3 KB  |  161 lines

  1. /*      transprt.h        (c) Steve Adam 1995   steve@netinfo.com.au
  2.  *
  3.  *      Include this file to use functions from the tcp module.
  4.  *      ie: tcp/udp, etc....
  5.  *
  6.  *      Modified 12/16/95 for MiNTlib compatibility --sb
  7.  */
  8.  
  9. #ifndef STIK_TRANSPRT_H
  10. #define STIK_TRANSPRT_H
  11.  
  12. #ifndef COMPILER_H
  13. #include <compiler.h>
  14. #endif
  15.  
  16. #ifndef   STIK_DRIVERS_H
  17. #include  "drivers.h"
  18. #endif /* STIK_DRIVERS_H */
  19.  
  20. #define TRANSPORT_DRIVER    "TRANSPORT_TCPIP"
  21. #define TCP_DRIVER_VERSION    "01.07"
  22.  
  23. /* TCP connection states    */
  24. #define TCLOSED     0   /* No connection.  Null, void, absent, .....        */
  25. #define TLISTEN     1   /* Wait for remote request.                         */
  26. #define TSYN_SENT   2   /* Connect request sent.  Await matching request    */
  27. #define TSYN_RECV   3   /* Wait for connection ACK.  (Listener only??)      */
  28. #define TESTABLISH  4   /* Connection is established.  Handshake completed  */
  29. #define TFIN_WAIT1  5   /* Await termination request or acknowledgement     */
  30. #define TFIN_WAIT2  6   /* Await termination request.                       */
  31. #define TCLOSE_WAIT 7   /* Await termination request from local user        */
  32. #define TCLOSING    8   /* Await termination acknowledge from remote TCP    */
  33. #define TLAST_ACK   9   /* Await acknowledgement of terminate request sent  */
  34. #define TTIME_WAIT 10   /* Delay to ensure remote has received term' ACK    */
  35.  
  36. /* TCP and connection ERROR states. */
  37. #define E_NORMAL        0   /* No error occured...                      */
  38. #define E_OBUFFULL     -1   /* Output buffer is full                    */
  39. #define E_NODATA       -2   /* No data available.                       */
  40. #define E_EOF          -3   /* EOF from remote..                        */
  41. #define E_RRESET       -4   /* RST received from remote.                */
  42. #define E_UA           -5   /* RST.  Other end sent unacceptable pkt    */
  43. #define E_NOMEM        -6   /* Something failed due to lack of memory   */
  44. #define E_REFUSE       -7   /* Connection refused by remote             */
  45. #define E_BADSYN       -8   /* A SYN was received in the window         */
  46. #define E_BADHANDLE    -9   /* Bad connection handle used.              */
  47. #define E_LISTEN       -10  /* The connection is in LISTEN state        */
  48. #define E_NOCCB        -11  /* No free CCB's available                  */
  49. #define E_NOCONNECTION -12  /* No connection matches this packet. (TCP) */
  50. #define E_CONNECTFAIL  -13  /* Failure to connect to remote port. (TCP) */
  51. #define E_BADCLOSE     -14  /* Invalid TCP_close() requested            */
  52. #define E_USERTIMEOUT  -15  /* A user function timed out                */
  53. #define E_CNTIMEOUT    -16  /* A the connection timed out               */
  54. #define E_CANTRESOLVE  -17  /* Can't resolve the hostname               */
  55. #define E_BADDNAME     -18  /* Domain name or Dotted Dec.  bad format   */
  56. #define E_LOSTCARRIER  -19  /* The modem disconnected                   */
  57. #define E_NOHOSTNAME   -20  /* Hostname does not exist                  */
  58. #define E_DNSWORKLIMIT -21  /* Resolver Work limit reached              */
  59. #define E_NONAMESERVER -22  /* No nameservers could be found for query  */
  60. #define E_DNSBADFORMAT -23  /* Bad format of DS query                   */
  61. #define E_UNREACHABLE  -24  /* Destination unreachable                  */
  62. #define E_DNSNOADDR    -25  /* No address records exist for host        */
  63. #define E_LASTERROR     25    /* ABS of last error code in this list      */
  64.  
  65. /* FLagbox Flag definitions    (max 64 flags...) */
  66. #define FL_do_resolve    0
  67. #define FL_housekeep    1
  68.  
  69.  
  70. /* Input queue structures   */
  71.  
  72. typedef struct ndb {    /*  Network Data Block.  For data delivery      */
  73.     char        *ptr;   /* Pointer to base of block. (For KRfree();)    */
  74.     char        *ndata; /* Pointer to next data to deliver              */
  75.     uint16      len;    /* Length of remaining data.                    */
  76.     struct ndb  *next;  /* Next NDB in chain or NULL                    */
  77. } NDB;
  78.  
  79.  
  80. /* Connection information block    */
  81.  
  82. typedef struct cib {        /* Connection Information Block.    */
  83.     uint16      protocol;   /* TCP or UDP or ... 0 means CIB not in use */
  84.     uint16      lport;      /* TCP client port.  (ie: At this machine)  */
  85.     uint16      rport;      /* TCP server port.  (ie: remote machine)   */
  86.     uint32      rhost;      /* TCP server IP addr. (ie: remote machine) */
  87. } CIB;
  88.  
  89. /*  Values for protocol field    */
  90. #define P_ICMP   1
  91. #define P_TCP    6
  92. #define P_UDP   17
  93.  
  94.  
  95. /*  Transport structure/functions   */
  96.  
  97. typedef struct tpl {
  98.     char    *module;    /* specific string that can be searched for */
  99.     char    *author;    /* Any string                               */
  100.     char    *version;   /* Format `00.00' Version:Revision          */
  101.     char  * __CDECL (*KRmalloc)(int32);
  102.     void    __CDECL (*KRfree)(char *);
  103.     int32   __CDECL (*KRgetfree)(int16 x);
  104.     char  * __CDECL (*KRrealloc)(char *, int32);
  105.     char  * __CDECL (*get_err_text)(int16);
  106.     char  * __CDECL (*getvstr)(char *);
  107.     int16   __CDECL (*carrier_detect)(void);
  108.     int16   __CDECL (*TCP_open)(uint32, int16, int16, uint16);
  109.     int16   __CDECL (*TCP_close)(int16, int16);
  110.     int16   __CDECL (*TCP_send)(int16, char *, int16);
  111.     int16   __CDECL (*TCP_wait_state)(int16, int16, int16);
  112.     int16   __CDECL (*TCP_ack_wait)(int16, int16);
  113.     int16   __CDECL (*UDP_open)(uint32, int16);
  114.     int16   __CDECL (*UDP_close)(int16);
  115.     int16   __CDECL (*UDP_send)(int16, char *, int16);
  116.     int16   __CDECL (*CNkick)(int16);
  117.     int16   __CDECL (*CNbyte_count)(int16);
  118.     int16   __CDECL (*CNget_char)(int16);
  119.     NDB   * __CDECL (*CNget_NDB)(int16);
  120.     int16   __CDECL (*CNget_block)(int16, char *, int16);
  121.     void    __CDECL (*housekeep)(void);
  122.     int16   __CDECL (*resolve)(char *, char **, uint32 *, int16);
  123.     void    __CDECL (*ser_disable)(void);
  124.     void    __CDECL (*ser_enable)(void);
  125.     int16    __CDECL (*set_flag)(int16);
  126.     void    __CDECL (*clear_flag)(int16);
  127.     CIB   * __CDECL (*CNgetinfo)(int16);
  128. } TPL;
  129.  
  130. extern TPL *tpl;
  131.  
  132. #define KRmalloc(x)             (*tpl->KRmalloc)(x)
  133. #define KRfree(x)               (*tpl->KRfree)(x)        
  134. #define KRgetfree(x)            (*tpl->KRgetfree)(x)
  135. #define KRrealloc(x,y)          (*tpl->KRrealloc)(x,y)
  136. #define get_err_text(x)         (*tpl->get_err_text)(x)
  137. #define getvstr(x)              (*tpl->getvstr)(x)
  138. #define carrier_detect()        (*tpl->carrier_detect)()
  139. #define TCP_open(h,p,t,o)       (*tpl->TCP_open)(h,p,t,o)
  140. #define TCP_close(x,y)          (*tpl->TCP_close)(x,y)
  141. #define TCP_send(x,y,z)         (*tpl->TCP_send)(x,y,z)
  142. #define TCP_wait_state(x,y,z)   (*tpl->TCP_wait_state)(x,y,z)
  143. #define TCP_ack_wait(x,y)       (*tpl->TCP_ack_wait)(x,y)
  144. #define UDP_open(x,y)           (*tpl->UDP_open)(x,y)
  145. #define UDP_close(x)            (*tpl->UDP_close)(x)
  146. #define UDP_send(x,y,z)         (*tpl->UDP_send)(x,y,z)
  147. #define CNkick(x)               (*tpl->CNkick)(x)
  148. #define CNbyte_count(x)         (*tpl->CNbyte_count)(x)
  149. #define CNget_char(x)           (*tpl->CNget_char)(x)
  150. #define CNget_NDB(x)            (*tpl->CNget_NDB)(x)
  151. #define CNget_block(x,y,z)      (*tpl->CNget_block)(x,y,z)
  152. #define housekeep()             (*tpl->housekeep)()
  153. #define resolve(w,x,y,z)        (*tpl->resolve)(w,x,y,z)
  154. #define ser_disable()           (*tpl->ser_disable)()
  155. #define ser_enable()            (*tpl->ser_enable)()
  156. #define set_flag(x)             (*tpl->set_flag)(x)
  157. #define clear_flag(x)           (*tpl->clear_flag)(x)
  158. #define CNgetinfo(x)            (*tpl->CNgetinfo)(x)
  159.  
  160. #endif /* STIK_TRANSPRT_H */
  161.